MySQL mysqldump

mysqldump 技巧点

导出一个数据库

shell> mysqldump db1 > dump.sql
shell> mysqladmin create db2
shell> mysql db2 < dump.sql

恢复一个测试库

server1

shell> mysqldump --databases db1 > dump.sql

server2

shell> mysql < dump.sql

备份存储程序

--events: 转储事件调度程序

--routines: 备份存储过程和函数

--triggers: 备份表上的triggers。

导出表定义和表内容

--no-data选项告诉mysqldump不要转储表数据,导致转储文件只包含创建表的语句。相反,no-create-info选项告诉mysqldump从输出中删除CREATE语句,以便转储文件只包含表数据。

例如,要分别为测试数据库转储表定义和数据,可以使用以下命令

shell> mysqldump --no-data test > dump-defs.sql
shell> mysqldump --no-create-info test > dump-data.sql

对于只包含定义的转储,添加--routines--events选项,也包括存储的例程和事件定义:

shell> mysqldump --no-data --routines --events test > dump-defs.sql

升级测试

在考虑升级MySQL时,明智的做法是将更新的版本与当前的生产版本分开安装。然后,您可以从生产服务器转储数据库和数据库对象定义,并将它们加载到新服务器,以验证它们得到了正确的处理。(这对于测试降级也很有用。)

生产机器上

shell> mysqldump --all-databases --no-data --routines --events > dump-defs.sql

测试机器上

shell> mysql < dump-defs.sql

由于转储文件不包含表数据,因此可以快速处理它。这使您能够发现潜在的不兼容性,而无需等待冗长的数据加载操作。在处理转储文件时查找警告或错误。

等到兼容性测试得到正确的处理之后。加载数据到升级的服务器中。

shell> mysqldump --all-databases --no-create-info > dump-data.sql
shell> mysql < dump-data.sql